package asset_api

import (
	"base"
	"game_server/logic/asset/handler"
	"game_server/model"
	"proto/base"
)

var (
	// 注册处理器到资产系统中
	Register func(handler asset_handler.Interface)

	// 获取玩家身上持有的道具数量
	Get func(player *model.Player, itemId base.AssetItemId, entity interface{}) (itemCount base.AssetItemCount, err error)

	// 判断玩家是否拥有足够的道具数量
	Have func(player *model.Player, item *base.AssetItem) (err error)

	// 处理玩家的资产道具
	// 可以同时处理有增和减的情况, 并且保证全程调用过程中是事务性的, 一旦发生异常状况, 可以将资产回滚到调用之前
	Handle func(player *model.Player, addItems []*base.AssetItem, removeItems []*base.AssetItem, reason proto_base.ChangeReason, callback func()) (result *asset_handler.Result, err error)
)
